home *** CD-ROM | disk | FTP | other *** search
- alpha1.2 6 Aug 1992 - initial release
-
- alpha1.3 17 Sep 1992 - fixes the following problems:
-
- * Installation instructions too brief and not clear enough
- * Error incorrectly reported on the following code format:
- select
- when a
- then ...
- when b
- then ...
- end
- * Clause tracing did not strip leading tabs.
- * Special variable SIGL not set on calling an internal routine
- * Second parameter of bitxxx() was required; should be optional
- * pos, lastpos, wordpos gave error when the needle was empty
- * sign('-0') = -1 (should be 0)
- * sign() left extra value on calculator stack, causing surprises
- * subword(" to be or not to be ",7) caused crash; similarly for
- word and wordlength
- * symbol() gave incorrect results;
- * translate(x,"") mistook the empty string for an omitted argument
- * wordindex(string,n) gave non-zero when string contained n-1 words
- * x2d() did not recognise second parameter
- * arg() gave "4", not "2" when arguments were: func(1,2,,)
- * binary strings were too restricted (i.e. a multiple of 8 digits and
- no spaces)
- * "DO for=forever" interpreted FOREVER as reserved
- * PROCEDURE EXPOSE used commas as separators instead of spaces
- * date('U') gave wrong day number
- * Leading and trailing spaces were allowed in hex constants
- * Priorities of implicit concatenation, space operator and unary operators
- were wrong
- * random(n,n) returned error; should return n
- * Memory fault occurred after 63 nested PROCEDURE instructions
- * expression after PUSH and QUEUE was required
- * "rxstack" sometimes exited before giving the stack a chance to catch up;
- after that queued() would slowly rise up to its correct value.
-
- beta1.4 13 May 1993 - fixes the following problems:
-
- * Mathematical function name discrepancy between rxmathfn.c and rxfn.c
- now fixed
- * Intermittent "Routine not found" error when using external functions
- now fixed
- * Case of labels is now preserved in "trace l"
- * "parse var a.b" gave "?.B" when a.b undefined, now gives "A.B"
- * "parse var" now signals to NOVALUE when variable is undefined
- * stem. is now different from stem.""
- * "stem.=5; drop stem.5; say stem. stem.5" now says "5 STEM.5" (did say
- "5 5")
- * Control variable in a loop is interpreted on each pass, and END, LEAVE
- and ITERATE compare symbol names literally.
- * INTERPRET changed to detect incomplete DO/SELECT blocks
- * SELECT (and WHEN) changed to reject multiple statements in WHEN clauses
- * "do name=expri ..." changed to assign "expr + 0" to "name" instead of
- just "expr".
- * UNTIL conditions are tested before incrementing the control variable
- * WHILE/UNTIL checking "modernised" ;-)
- * "procedure expose (varlist)" implemented
- * Fixed uninitialised char* pointer in rxchars2() which made lines()
- sometimes bomb out with segmentation fault
- * Fixed "Unexpected THEN/ELSE" error report for instructions of form
- "otherwise if (cond) then ..."
- * Amended rxmathfn.exec to use single instructions in WHEN clauses
- * Fixed multiplication to say "Arithmetic Overflow" instead of "Invalid
- whole number" when overflow occurs
- * Fixed stacknum() to report error on too-large exponents - it previously
- stacked an erroneous value instead.
- * Fixed sqrt() to work with argument zero
- * Fixed EXIT instruction to record size of new calculator stack
- (previous code occasionally caused hard-to-trace memory crashes)
- * chars(file) calls stat to return the size of file when it is not open
- * chars() now takes into account characters buffered by stdio
- * NUMERIC settings saved across function calls
- * "parse numeric" now works
- * Changed the sqrt() function in rxmathfn.exec
- * Fixed formatting to obey 2*DIGITS rule for small numbers
- * Fixed format() to obey 2*expt rule, also to round the number on input
-
- REXX/imc-beta-1.5 4.00 25 Jun 1993 has the following changes:
-
- * Fixed two erroneous source lines which choke sensitive compilers
- * Distinguished between AIX cc and AIX gcc in the Makefile
- * made "do 3=i" an error instead of a counted loop
- * made "a==4" an error instead of a command
- * Message 15 last word changed from "constant" to "string"
- * '414243'x(3) is now a function call (was abuttal)
- * allowed tab characters in hex and binary strings
- * implemented "drop (list)"
- * Added STUFF_STACK preprocesor symbol
- * Fixed traceback and related things so that, for instance, running
- main.exec, where main, foo and bar are as follows:
-
- main.exec foo.exec bar.exec
-
- /* call an OK program */ /* call an erroneous program */ /* error */
- call foo say "Entered FOO" return a+b
- say bar()
- say "Leaving FOO"
- return
-
- produces the following output:
-
- Entered FOO
- 2 +++ return a+b
- Error 41 running /tmp/bar.exec, line 2: Bad arithmetic conversion
- 3 +++ say bar()
- Error 50 running /tmp/foo.exec, line 3: Error in called routine
- 2 +++ call foo
- Error 50 running /tmp/main.exec, line 2: Error in called routine
-
- whereas only the first four lines would previously have been displayed.
- Similarly, traceback is printed for an error in an external routine
- even when the error is trapped in the calling program.
-
- * Removed the RC messages from error reports such as the above, because
- they were pointless.
- * Changed the format of RC messages from "RC(n)" to "RC=n"
- * Implemented the third parameter of justify()
- * Corrected "parse version" to show a language level as second token
- instead of the interpreter version.
- * Corrected mtest() to keep the old value if realloc fails
- * Rewrote the tokeniser and amended various parts of the interpreter to
- use the new program format
- * Implemented the "name" subkeyword of "signal on"
- * implemented the "failure" and "notready" conditions
- * Added command line option processing
- * Added extra signal handlers to make the interpreter die more cleanly
- * Implemented "call on"
- * Implemented the "condition" builtin function
- * Made "Unexpected '*/'" a separate (nonstandard) error message
- * Trace instructions now ignored in program if interactive tracing is on
- * Implemented "tracefile=" option
- * Improved chars() and lines() for non-open files to get more information
- and raise notready if appropriate. Improved lines() for persistent
- files to return the correct result (and not just 0 or 1).
- * Deleted ioerr(). RC is no longer set when notready is raised.
- * Fixed the return values of charout() [would sometimes return a null
- string or an incorrect value of 1 if an error occurred].
- * File I/O functions now give error when the file is an empty string.
- * Implemented the stream() function with commands close, fdopen, fileno,
- flush, ftell, open, pclose and popen.
- * Changed rexxtest.exec to use the stream() function instead of all those
- other ones.
- * Changed REXXPATH to REXXIMC and implemented the search so that this
- environment variable is no longer necessary.
-